/*单词转换程序*/

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>

int main(int argc, char**argv)
{
	map<string, string> trans_map;
	string key,value;
	if (argc != 3)
		throw runtime_error("wrong number of arguments");
	ifstream map_file;
	if(!open_file(map_file,argv[1]))                //open_file is in 8.4.3
		throw runtime_error('no transformation file');
	while(map_file >> key >> value)          //输入流遇到空白字符停止,下一次输入流读入时忽略有意义字符前面的空白字符
		trans_map.insert(make_pair(key,value));
	ifstream input;
	if(!open_file(input,argv[2]))
		throw runtime_error("no input file");
	string line;
	while (getline(input,line)){
		istringstream stream(line);      // read the line a word at a time
		string(word);
		bool firstword = true;
		while(stream >> word){
			map<string,string>::const_iterator map_it = trans_map.find(word);
			if(map_it != trans_map.end())
				word = map_it->second;
			if (firstword)
				firstword = false;
			else
				cout << " ";
			cout << word;
		}
		cout <<endl;
	}
	return 0;
}
